description(
"This test checks the behavior of table styles when changing certain table attributes."
);

var yellow = "rgb(255, 255, 0)";
var orange = "rgb(255, 165, 0)";
var red = "rgb(255, 0, 0)";

var table = document.createElement("table");
table.setAttribute("style", "border-color: yellow");
var row = table.insertRow(-1);
row.setAttribute("style", "border-color: orange");
var cell = row.insertCell(-1);
cell.setAttribute("style", "border-color: red");

document.body.appendChild(table);

shouldBe("getComputedStyle(table, '').borderLeftWidth", "'0px'");
shouldBe("getComputedStyle(table, '').borderRightWidth", "'0px'");
shouldBe("getComputedStyle(table, '').borderTopWidth", "'0px'");
shouldBe("getComputedStyle(table, '').borderBottomWidth", "'0px'");
shouldBe("getComputedStyle(table, '').borderLeftStyle", "'none'");
shouldBe("getComputedStyle(table, '').borderRightStyle", "'none'");
shouldBe("getComputedStyle(table, '').borderTopStyle", "'none'");
shouldBe("getComputedStyle(table, '').borderBottomStyle", "'none'");
shouldBe("getComputedStyle(table, '').borderLeftColor", "yellow");
shouldBe("getComputedStyle(table, '').borderRightColor", "yellow");
shouldBe("getComputedStyle(table, '').borderTopColor", "yellow");
shouldBe("getComputedStyle(table, '').borderBottomColor", "yellow");

shouldBe("getComputedStyle(cell, '').borderLeftWidth", "'0px'");
shouldBe("getComputedStyle(cell, '').borderRightWidth", "'0px'");
shouldBe("getComputedStyle(cell, '').borderTopWidth", "'0px'");
shouldBe("getComputedStyle(cell, '').borderBottomWidth", "'0px'");
shouldBe("getComputedStyle(cell, '').borderLeftStyle", "'none'");
shouldBe("getComputedStyle(cell, '').borderRightStyle", "'none'");
shouldBe("getComputedStyle(cell, '').borderTopStyle", "'none'");
shouldBe("getComputedStyle(cell, '').borderBottomStyle", "'none'");
shouldBe("getComputedStyle(cell, '').borderLeftColor", "red");
shouldBe("getComputedStyle(cell, '').borderRightColor", "red");
shouldBe("getComputedStyle(cell, '').borderTopColor", "red");
shouldBe("getComputedStyle(cell, '').borderBottomColor", "red");

table.border = '';

shouldBe("getComputedStyle(table, '').borderLeftWidth", "'1px'");
shouldBe("getComputedStyle(table, '').borderRightWidth", "'1px'");
shouldBe("getComputedStyle(table, '').borderTopWidth", "'1px'");
shouldBe("getComputedStyle(table, '').borderBottomWidth", "'1px'");
shouldBe("getComputedStyle(table, '').borderLeftStyle", "'outset'");
shouldBe("getComputedStyle(table, '').borderRightStyle", "'outset'");
shouldBe("getComputedStyle(table, '').borderTopStyle", "'outset'");
shouldBe("getComputedStyle(table, '').borderBottomStyle", "'outset'");
shouldBe("getComputedStyle(table, '').borderLeftColor", "yellow");
shouldBe("getComputedStyle(table, '').borderRightColor", "yellow");
shouldBe("getComputedStyle(table, '').borderTopColor", "yellow");
shouldBe("getComputedStyle(table, '').borderBottomColor", "yellow");

shouldBe("getComputedStyle(cell, '').borderLeftWidth", "'1px'");
shouldBe("getComputedStyle(cell, '').borderRightWidth", "'1px'");
shouldBe("getComputedStyle(cell, '').borderTopWidth", "'1px'");
shouldBe("getComputedStyle(cell, '').borderBottomWidth", "'1px'");
shouldBe("getComputedStyle(cell, '').borderLeftStyle", "'inset'");
shouldBe("getComputedStyle(cell, '').borderRightStyle", "'inset'");
shouldBe("getComputedStyle(cell, '').borderTopStyle", "'inset'");
shouldBe("getComputedStyle(cell, '').borderBottomStyle", "'inset'");
shouldBe("getComputedStyle(cell, '').borderLeftColor", "red");
shouldBe("getComputedStyle(cell, '').borderRightColor", "red");
shouldBe("getComputedStyle(cell, '').borderTopColor", "red");
shouldBe("getComputedStyle(cell, '').borderBottomColor", "red");

table.setAttribute("bordercolor", "green");

shouldBe("getComputedStyle(table, '').borderLeftWidth", "'1px'");
shouldBe("getComputedStyle(table, '').borderRightWidth", "'1px'");
shouldBe("getComputedStyle(table, '').borderTopWidth", "'1px'");
shouldBe("getComputedStyle(table, '').borderBottomWidth", "'1px'");
shouldBe("getComputedStyle(table, '').borderLeftStyle", "'solid'");
shouldBe("getComputedStyle(table, '').borderRightStyle", "'solid'");
shouldBe("getComputedStyle(table, '').borderTopStyle", "'solid'");
shouldBe("getComputedStyle(table, '').borderBottomStyle", "'solid'");
shouldBe("getComputedStyle(table, '').borderLeftColor", "yellow");
shouldBe("getComputedStyle(table, '').borderRightColor", "yellow");
shouldBe("getComputedStyle(table, '').borderTopColor", "yellow");
shouldBe("getComputedStyle(table, '').borderBottomColor", "yellow");

shouldBe("getComputedStyle(cell, '').borderLeftWidth", "'1px'");
shouldBe("getComputedStyle(cell, '').borderRightWidth", "'1px'");
shouldBe("getComputedStyle(cell, '').borderTopWidth", "'1px'");
shouldBe("getComputedStyle(cell, '').borderBottomWidth", "'1px'");
shouldBe("getComputedStyle(cell, '').borderLeftStyle", "'solid'");
shouldBe("getComputedStyle(cell, '').borderRightStyle", "'solid'");
shouldBe("getComputedStyle(cell, '').borderTopStyle", "'solid'");
shouldBe("getComputedStyle(cell, '').borderBottomStyle", "'solid'");
shouldBe("getComputedStyle(cell, '').borderLeftColor", "red");
shouldBe("getComputedStyle(cell, '').borderRightColor", "red");
shouldBe("getComputedStyle(cell, '').borderTopColor", "red");
shouldBe("getComputedStyle(cell, '').borderBottomColor", "red");

table.rules = "cols";

shouldBe("getComputedStyle(table, '').borderLeftWidth", "'1px'");
shouldBe("getComputedStyle(table, '').borderRightWidth", "'1px'");
shouldBe("getComputedStyle(table, '').borderTopWidth", "'1px'");
shouldBe("getComputedStyle(table, '').borderBottomWidth", "'1px'");
shouldBe("getComputedStyle(table, '').borderLeftStyle", "'solid'");
shouldBe("getComputedStyle(table, '').borderRightStyle", "'solid'");
shouldBe("getComputedStyle(table, '').borderTopStyle", "'solid'");
shouldBe("getComputedStyle(table, '').borderBottomStyle", "'solid'");
shouldBe("getComputedStyle(table, '').borderLeftColor", "yellow");
shouldBe("getComputedStyle(table, '').borderRightColor", "yellow");
shouldBe("getComputedStyle(table, '').borderTopColor", "yellow");
shouldBe("getComputedStyle(table, '').borderBottomColor", "yellow");

shouldBe("getComputedStyle(cell, '').borderLeftWidth", "'1px'");
shouldBe("getComputedStyle(cell, '').borderRightWidth", "'1px'");
shouldBe("getComputedStyle(cell, '').borderTopWidth", "'0px'");
shouldBe("getComputedStyle(cell, '').borderBottomWidth", "'0px'");
shouldBe("getComputedStyle(cell, '').borderLeftStyle", "'solid'");
shouldBe("getComputedStyle(cell, '').borderRightStyle", "'solid'");
shouldBe("getComputedStyle(cell, '').borderTopStyle", "'none'");
shouldBe("getComputedStyle(cell, '').borderBottomStyle", "'none'");
shouldBe("getComputedStyle(cell, '').borderLeftColor", "red");
shouldBe("getComputedStyle(cell, '').borderRightColor", "red");
shouldBe("getComputedStyle(cell, '').borderTopColor", "red");
shouldBe("getComputedStyle(cell, '').borderBottomColor", "red");

table.rules = "rows";

shouldBe("getComputedStyle(table, '').borderLeftWidth", "'1px'");
shouldBe("getComputedStyle(table, '').borderRightWidth", "'1px'");
shouldBe("getComputedStyle(table, '').borderTopWidth", "'1px'");
shouldBe("getComputedStyle(table, '').borderBottomWidth", "'1px'");
shouldBe("getComputedStyle(table, '').borderLeftStyle", "'solid'");
shouldBe("getComputedStyle(table, '').borderRightStyle", "'solid'");
shouldBe("getComputedStyle(table, '').borderTopStyle", "'solid'");
shouldBe("getComputedStyle(table, '').borderBottomStyle", "'solid'");
shouldBe("getComputedStyle(table, '').borderLeftColor", "yellow");
shouldBe("getComputedStyle(table, '').borderRightColor", "yellow");
shouldBe("getComputedStyle(table, '').borderTopColor", "yellow");
shouldBe("getComputedStyle(table, '').borderBottomColor", "yellow");

shouldBe("getComputedStyle(cell, '').borderLeftWidth", "'0px'");
shouldBe("getComputedStyle(cell, '').borderRightWidth", "'0px'");
shouldBe("getComputedStyle(cell, '').borderTopWidth", "'1px'");
shouldBe("getComputedStyle(cell, '').borderBottomWidth", "'1px'");
shouldBe("getComputedStyle(cell, '').borderLeftStyle", "'none'");
shouldBe("getComputedStyle(cell, '').borderRightStyle", "'none'");
shouldBe("getComputedStyle(cell, '').borderTopStyle", "'solid'");
shouldBe("getComputedStyle(cell, '').borderBottomStyle", "'solid'");
shouldBe("getComputedStyle(cell, '').borderLeftColor", "red");
shouldBe("getComputedStyle(cell, '').borderRightColor", "red");
shouldBe("getComputedStyle(cell, '').borderTopColor", "red");
shouldBe("getComputedStyle(cell, '').borderBottomColor", "red");

// resets to default border width of 3px
table.removeAttribute("border");

shouldBe("getComputedStyle(table, '').borderLeftWidth", "'3px'");
shouldBe("getComputedStyle(table, '').borderRightWidth", "'3px'");
shouldBe("getComputedStyle(table, '').borderTopWidth", "'3px'");
shouldBe("getComputedStyle(table, '').borderBottomWidth", "'3px'");
shouldBe("getComputedStyle(table, '').borderLeftStyle", "'solid'");
shouldBe("getComputedStyle(table, '').borderRightStyle", "'solid'");
shouldBe("getComputedStyle(table, '').borderTopStyle", "'solid'");
shouldBe("getComputedStyle(table, '').borderBottomStyle", "'solid'");
shouldBe("getComputedStyle(table, '').borderLeftColor", "yellow");
shouldBe("getComputedStyle(table, '').borderRightColor", "yellow");
shouldBe("getComputedStyle(table, '').borderTopColor", "yellow");
shouldBe("getComputedStyle(table, '').borderBottomColor", "yellow");

document.body.removeChild(table);
